查看原文
其他

达哥深入解读,Unity 2020.1 不容错过的新功能

达哥 Unity官方平台 2022-05-07

Unity本年度首个技术更迭版Unity 2020.1已于上周正式上线,对于想要尝试新技术的朋友,我们强烈推荐这一版;如果你在之前的创作中遇到了问题,也不妨看看此次更新是否已经解决;对于想要在最稳定的编辑器版本上开发项目的用户来说,Unity 2019 LTS仍是最好的选择。

大家好!我是达哥,本期我们来聊聊Unity 2020.1将会有哪些新的改进。

 

首先,再跟大家说明一下Unity版本号的变动。以往Unity的版号是从.1 .2 .3 最终到.4 LTS,我们在上一篇文章已提过(点击回看),从2020开始,版号规范将会缩短成.1 .2 然后.3 LTS,将不会再有.4这个版号,我们希望版号的时间表能更贴近年份。

 

2020.1有许多新功能,有些也是2019 LTS延伸过来并改进的功能。


本期视频已同步至B站,大家进入B站搜索“Unity官方”就可以看到啦~接下来我们就来看看Unity 2020.1有哪些改进吧!




资源导入流V2 Asset Import Pipeline


我们在去年重建了整个资源导入的流程,从2020.1开始这个V2版将会是默认值。


这个版本大大的改善了资源导入的时间,这意味着平台切换的速度也会大幅提升,新结构对于资源之间的依赖关系描述更靠谱,未来在打包时解决资源依赖的增减将会更容易。




Burst 编译器 1.3


这个Burst编译器是Unity DOTS里很重要的一环,他的主要功能就是针对项目的加速有直接的帮助。这个功能已经发布有一年了,在1.3这个版本当然也改进了许多,性能的提升以及更多API接口等等,但我个人最期待的是,Burst 1.3编译出来的能自带调试用代码,能通过Visual Studio或是XCode更容易来追踪性能问题。



文档编辑器集成 IDEs


Unity现在把像是Visual Studio, Rider这种代码IDE都集成在一起,并且放在Package Manager内。

从2020.1开始也加入了Visual Studio 2019套件,随着版本的演进,会有越来越多的IDE被收录在这。当然自行安装自己的工具也是可以的。



Prefab编辑器改进


Prefab编辑器是在2018.3时发布的,它可以编辑一个Prefab预制件,但也因为是另开窗口的关系,当你想要和场景其他对象对照的时候不太方便。从2020.1开始编辑Prefab物件会默认在场景内编辑。场景内其他的对象会变成灰色,当然你也可以切换显示或隐藏。




脚本编辑相关


01   新调试工作流

从2020.1开始,项目在Unity编辑器内还没编译打包之前,就会先以发布考虑的格式来安排运行代码。这样不但能加速编译时间,这样的做法还带来了一个好处,当你发现运行中的项目出现了一些问题,可以立马切换到调试模式而再也不需要重启游戏,对于重启游戏后再也无法重现问题的人来说,这是非常好用的一个功能。未来你可以在没有开调试模式的状况下运行游戏,当遇到问题时即时打开调试模式进行调试。这样一来平时运行也就不用加载调试模式所需模块,报告更贴近真机测试,性能也比较好。


02   串行化通用型态栏位

以往如果你想串行化一个通用型态栏位,必须先定义一个非通用型态子类(non-generic subclass)。从2020.1开始就不用这么麻烦,可以直接生成了。



03   输入系统 Input System

新的输入系统在2020.1从预览改为正式版。

这个系统从2019周期导入到现在,为了解决各种不同现代平台操作方式像是触碰、键盘和手柄等等的输入逻辑而重新打造的系统。实现了做一套操作,全平台通用。

不但如此,也开放了许多API接口方便开发者和UGUI这类系统直接交互


04   打包报告检视 Build Report Inspector

Unity从2018开始导入了Build Report API,专门用来调试打包过程所发生的问题,比如打包为什么慢?有什么优化空间?为什么漏文档等等?产生出来的报告就可以显示在这个Build Report Inspector打包报告检视窗口里。目前这个功能才开始进入预览,源码会放在Github上。


05   独立调试窗口 Standalone Profiler

以往的调试器Unity Profiler是集成在编辑器内的,这个调试器可以观看项目每一帧的消耗到底花在哪里,方便评估优化方案,但因为产出的报告也包含了Unity编辑器的消耗,数值混在一起反而容易造成判断错误。从2020.1开始这个Profiler可以单独开启,意味着整个调试流程就会移到Unity之外作为单独运行的程序,所产出的报告就会更贴近项目运行的真实消耗。


要运行这个程序可以从Window->Analysis->Profiler(StandaloneProcess)来开启。



06   自定义事件 Profiler

现在你也可以通过Profiler的自定义API来把事件送到Profiler,生成一个可视化的图表,例如将Unity在Job系统多线程时的调度分配变成图表。从而显示在主线程等待多线程工作时的点,以图型的方式显示两者之间的关系。



07   Metadata API支持

在Unity内每个资源物件都会产生一个中继资料档Metadata, 现在可以通过Unity所提供的C# API来把里面的变量放到Profiler上,方便观察性能问题的可能性。这个功能也是预览,整个2020周期都会持续改进。



08   纪录GPU信息

以前你只能通过Recorder API来获取CPU性能分析信息,并自己用UI显示出来。从2020.1开始,RecorderAPI开始支持从运行时获取GPU信息,方便分析渲染周期所造成的性能消耗。


会有这个功能是我们在开发SRP(Scriptable RenderPipeline就是新的渲染管线时的延伸产物)。




2D工具相关


01   新 2D 模板

Unity的2D工具在2020.1算是一个大跃进,许多原本都在预览的功能在这一版本大多都转正式了,而且还自带了新的2D开发模板,如果是新项目开发,2020是一个非常好进入新2D项目研发的一个版本,那么,整体来说有哪些功能呢?


02   角落拉伸功能 2D Sprite Shape

原本的2D Sprite Shape,就已经可以拉出不规则的形状方便处理像是地形的工具,现在针对转角又新添加了一个拉伸(Stretched)的选项,可以把处理转角的转折。


03   打包 v2 体验版 2D Sprite Atlas

新版的Sprite Atlas打包流程可以支持用脚本把纹理或是图片打包成图集了,这意味着未来项目的图集管理会方便很多,这功能目前是体验版。



04   2D 物理改进

2D的物理也做了许多改进,像是Rigidbody 2D的X轴和Y轴的约束器,现在不管锁定哪一轴,都已经优化到几乎0性能消耗。2D的碰撞在Simulation模式可以设置不同情境,比如物理的计算和渲染帧率同步,这意味着物理计算穿模问题会大大降低。


另外还有Edge Collider2D现在也能控制起点和终点,方便处理和其他碰撞体之间的表面连续碰撞计算。



05   2D 骨骼动画性能提升

2D骨骼动画的性能也有很大的提升,搭配前面介绍的Burst Compiler和Collections套件,就能够在运行动画变形时获得很大的性能提升。



06   2D Sprite Shape 网格烘焙

现在2D Sprite Shpae也支持先把网格数据烘焙起来,这样就能够在运行时直接加载而不需要重新生成。当你有运行时从未修改过的静态Sprite Shpae或者和Prefab一起使用的Sprite Shape时,就能省下许多CPU的运行时间。

需要注意的是,这样的做法虽然省下运算时间,相对的就是用空间去交换,资料量一大场景也会变大。而且在运行期间是无法修改这些烘焙的Sprite Shape网格。


07   2D Camera Stacking

跟UPR之前发布的改进一样,多摄像头堆叠是开发很重要的功能。


现在你可以在 SRP模式将多个镜头叠合成一个最终输出效果,用以处理像是小地图等等功能。




编辑器相关


01   Package Manager改进

首先是Package Manager的更新,2020.1的套件安装把预览版的开关放到Unity设置内,这样可以避免开发者在不知情的情况下安装了预览版的套件,说明和UI安排也都有改动。



02   背景工作进度窗口


以往的Unity版本中,监控编辑器的背景运行信息是不容易的。


新的背景工作窗口能追踪这些后台进程,看看Unity正在发生什么事情,也会提供相对应的API让程序人员做异步处理。我们还对所有的进度条管理做了一个改进,未来所有的运行任何需要停止操作编辑器的工作,会统一用一个显示窗口来显示目前正在执行的工作,并查看细节。



03   个别检视窗口 Focused Inspectors

全新的焦点检查窗口让你可以针对所选取的对象打开一个专属的属性检视窗口。

以前是只有一个窗口,选了别的对象属性视窗就跑掉了。现在你可以同时开启许多不同的窗口来查看不同的对象。而且这个窗口不单可以显示对象,也能锁定显示物件内的组件信息,荧幕够大会非常方便。


04   Presets改进

2019有介绍过Presets功能,专门用来记录当下对象属性,在需要的时候可以把这个属性套用到其他对象上,问题是每次都是记录全部属性。从2020.1开始就可以只复制和应用特定属性了。


05   FBX支持改进

FBX仍然是Unity支持最齐全的模型格式之一,从2020.1开始做了几项修正:


  支持来自Sketchup的网格导入自定义属性

  轴向转换设置,以后再也不会有模型转进Unity跌倒的状况发生了。

  导入PNG图片时可以忽略咖码校正的选项,这设置有助于不同平台之间纹理的颜色一致性。


06   Asset Store窗口移除

我们从Unity内移除了一个编辑器框架,但这个改动跟开发者没有什么关联。

主要是这个框架原本是用来在Unity内开启Asset Store窗口用的,但这项技术不但过时了,还引起了一些性能问题。因此我们在2020.1移除了它。

移除这个框架之后的Asset Store窗口该怎么开?

Unity内将不再支持开启Asset Store网页的窗口,你可以直接从网页上购买套件,然后从Unity的Package manager内的My Assets就可以找到套件并下载使用。


07  Unity Remote 功能移除

另外一个移除的功能是Unity Remote,Unity Remote是一个不用打包就可以把内容传到手机上测试的一个工具,但同样技术也过时了,未来我们会有更好的替代方案。


Device Simulator 装置模拟器


刚提到Remote被Remove掉了,如果不是真机测试,可以试试这个Device Simulator装置模拟方案,可以在编辑器内模拟移动设备播放。可以视为在开发环境用模拟器运行的概念。



美术工具相关


01   Cinemachine 2.5 转正式,2.6 转预览

这是一个虚拟摄像头的套件,各种游戏或电影会用到的运镜,包含一些像是镜头抖动、自动跟随等等这个都能帮你搞定。我个人对这个系统的评价相当高。


网上也有相当多教程,基本上就是搞定运镜所有需要的功能



02   Animation Rigging动作系统

Unity 2019开始导入的功能,以往我们把动作导入Unity之后发现有问题,通常都会请美术人员回到其他的DCC软件像是Maya, 3D Max去修改,有了这个功能之后,就能在Unity对动作添加设置约束器来微调动作。


例如:我有个手拿着武器的动作位置错了,这时我就可以把手的位置约束到刀柄就可以了。


你可以将骨骼动作烘焙起来并装到约束器上,这样可以对关键帧进行编辑;你也可以将约束后产生的动作烘焙到骨架上,运行时性能就不会消耗太大。


简单来说,未来你可以在Unity内微调各种动作了。



03   Kinematica动作系统预览

基于”动作匹配”概念的次世代人物动作系统,能在运行时生成高质量的人物动作。

他不像传统的做法,需要在Blend Tree或状态机安排两个动作之间的切换,只要给予一个骨骼姿势和所需的轨迹运动,他就会去演算出惯性的动作位移。


04   UI Toolkit

原本的UI Elements更名为UI Toolkit,这样比较直觉,一看就知道用来打造编辑器工具UI的,不管是编辑器UI或是执行时的UI他都可以做到。因为是设计给非程序人员的工具,他会有许多方便的功能是不用写代码的。



XR相关


01   激活XR设备的流程改进


我们调整了启用XR设备的菜单内容,现在比较直觉好用了。



02   AR Foundation 3.1

AR  Foundation和制作AR内容的开发者比较有相关,他跟Unity一样主打一次开发,全平台发布的概念。意思就是通过AR Foundation可以开发一个AR内容,但全部Unity支持的AR设备都可以发布。



图形相关


01   URP/HDRP 多摄像头叠加

URP的多镜头叠加之前有介绍,可以让你的3D对象和2D UI连同特效一起叠合。


02   光照设置文件 Lighting Setting Assets

全新的光照设置文件,可以让你把不同光照设置存下来,未来你可以调好各种不同环境光照,比如阴天、晴天、雨天、室内、室外、夜晚等等,并在需要的时候加载。


以往的光照信息是跟着场景的,从2020开始,照明设置会变成独立的设置文件,存储预先计算的全局光照资料相关所有信息。


这样的好处是A场景的光照设置也能给B场景应用,未来在场景氛围的制作会更简单。



03   烘焙贴图UV计算改进

美术人员在拆UV纹理时很重要的一点,就是如何善用空间把纹理塞的越密越好,这在光照烘焙也是一样的道理。但是自动计算的光照图以往可能会算出非预期的结果,比如太多空白。

 

未来在Unity模型导入时,就是Model Importer会多一个Calculate的选项可以勾选,用意就是把这些模型先纳入光照贴图计算考虑,拆平纹理并计算边距,求得最少空白的纹理结果,也不会有UV重叠的问题。可以看到右图是有打开选项的结果,比左边的干净许多。



04   全局光照烘焙的采样改进

光照贴图的计算简单来说就是模拟光的路径追踪,因为不同光线之间的路线关联性复杂,以往的算法偶而会因为这些特性产生不正确的结果或是躁点。

Unity 2020.1在光照路径计算的方法做了许多改动,默认的情况已经启用了这个设置。可以比较出和旧版有很大的差异,烘焙时间更短结果也比之前好很多,可以注意烘图从满是噪点到完成的时间变得更短。
 
原本的采样数量限制也从原本的10万个提升到10亿个。这意味着光线原本能模拟的环境更真实,一般游戏10万个采样,室内设计项目10亿个采样能烘出真实的结果,当然采样越多计算时间越久是不变的。


05   全局光照:支持俄罗斯轮盘烘焙模式

新的“俄罗斯轮盘”烘焙选项可以加快烘焙速度,他会依照情况自动决定光线最佳路径。

这个算法会考虑场景中的全局光照路径,当光线在深色表面反弹时,光线被吸收的程度越大,光线的投射就会结束的更早。这样不但可以减少整体烘焙的时间,对于最终的烘焙品质影响也不大。


06   光照贴图支持Cookies

Cookies在Unity内意思是一种光照时指定的纹理图型,很适合用来模拟光线通过对象所产生的阴影照明,增加真实感。

以前的Cookie不支持SRP。从Unity 2020.1开始,不管是CPU或是GPU的光照贴图都支持Cookie,这意味着混合模式的Cookie计算将会一起考虑直接光源和间接光源。


07   HDRP 光追支持网格特效

HDRP现在支持光追的进度已经到可以处理动态的网格光追处理,目前是预览版。


08   GPU纹理串流功能预览版

当你搭配HDRP使用Shader Graph时就能够使用这个”串流虚拟纹理”功能,当场景内有许多高分辨率的纹理时,他可以用串流的方式来减轻GPU内存的压力,以及加速纹理加载的时间。
 
他的原理是通过将纹理拆分为小图块,然后依照需求将这些小图块逐步上传到GPU内存内工作。这个功能目前是预览版。


以上就是2020.1整理的功能说明,希望本期内容对你有所帮助。


为大家附上Unity 2020.1的下载链接,亲自上手试试吧:

https://unity.cn/releases








 每一个“在看”,都是我们前进的动力 


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存